package com.findme.securitydb.utils;

import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description 文件上传工具类
 * @Author find me
 * @Createtime 2020/2/18 20:10
 * @ClassName FileUpdata
 */
public class FileUpdata {


    public static String ENDPOINT = "http://oss-cn-beijing.aliyuncs.com";
    //    阿里云的osskey
    public static String ACCESSKEYID = "LTAICLj4NJlxNRkD";
    public static String ACCESSKEYSECRET = "lMeJOF0JGVktsVS6AeBUxNG9KgOiQx";
    public static String BUCKETNAME = "scbookimg";
    public static String KEY = "imagefind/";
    public static String IMG_NAME = "img";

//    https://scbookimg.oss-cn-beijing.aliyuncs.com/

    public static JSONObject updateImg(MultipartFile file, String img, String imgName) {
        if (img == null) {
            img = KEY;
        }
        if (imgName == null) {
            imgName = IMG_NAME;
        } else {
            imgName = IMG_NAME + imgName;
        }
        JSONObject ret = new JSONObject();
        List<String> imgURL = new ArrayList<>();
        String key = "";
        String fileName = "";
        ret.put("msg", false);
        ret.put("URL", KEY);
        try {
//            for (MultipartFile file : files) {
            // 判断文件是否有内容
            if (file.isEmpty()) {
                System.out.println("该文件无任何内容!!!");
            }
            // 获取附件原名(有的浏览器如chrome获取到的是最基本的含 后缀的文件名,如myImage.png)
            // 获取附件原名(有的浏览器如ie获取到的是含整个路径的含后缀的文件名，如C:\\Users\\images\\myImage.png)
            fileName = file.getOriginalFilename();
            // 如果是获取的含有路径的文件名，那么截取掉多余的，只剩下文件名和后缀名
            if (fileName.indexOf("\\") > 0) {
                int index = fileName.lastIndexOf("\\");
                fileName = fileName.substring(index + 1);
            }
            // 判断单个文件大于1M
//                long fileSize = file.getSize();
//                if (fileSize > 1024 * 1024) {
//                    System.out.println("文件大小为(单位字节):" + fileSize);
//                    System.out.println("该文件大于1M");
//                }
            // 当文件有后缀名时
            if (fileName.indexOf(".") >= 0) {
                // split()中放正则表达式; 转义字符"\\."代表 "."
                String[] fileNameSplitArray = fileName.split("\\.");
                // 加上random戳,防止附件重名覆盖原文件
                fileName = imgName + RandomUtil.generateNumberString(1) + "." + fileNameSplitArray[1];
            }
            // 当文件无后缀名时(如C盘下的hosts文件就没有后缀名)
            if (fileName.indexOf(".") < 0) {
                // 加上random戳,防止附件重名覆盖原文件
                fileName = imgName + RandomUtil.generateNumberString(1);
            }

            InputStream input = file.getInputStream();
            // 创建OSSClient实例
            OSSClient ossClient = new OSSClient(ENDPOINT, ACCESSKEYID, ACCESSKEYSECRET);
            // 上传文件流
            ossClient.putObject(BUCKETNAME, img + fileName, input);
            ossClient.shutdown();
            imgURL.add(img + fileName);
//            }
            ret.put("msg", true);

            ret.put("URL", String.join(",", imgURL));
//            System.out.println(("图片上传阿里云 name=" + key + fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return ret;

    }


    public static JSONObject updateImgS(MultipartFile[] files, String img, String imgName) {
        if (img == null) {
            img = KEY;
        }
        if (imgName == null) {
            imgName = IMG_NAME;
        } else {
            imgName = IMG_NAME + imgName;
        }
        JSONObject ret = new JSONObject();
        List<String> imgURL = new ArrayList<>();
        String key = "";
        String fileName = "";
        ret.put("msg", false);
        ret.put("URL", KEY);
        try {
            for (MultipartFile file : files) {
                // 判断文件是否有内容
                if (file.isEmpty()) {
                    System.out.println("该文件无任何内容!!!");
                }
                // 获取附件原名(有的浏览器如chrome获取到的是最基本的含 后缀的文件名,如myImage.png)
                // 获取附件原名(有的浏览器如ie获取到的是含整个路径的含后缀的文件名，如C:\\Users\\images\\myImage.png)
                fileName = file.getOriginalFilename();
                // 如果是获取的含有路径的文件名，那么截取掉多余的，只剩下文件名和后缀名
                if (fileName.indexOf("\\") > 0) {
                    int index = fileName.lastIndexOf("\\");
                    fileName = fileName.substring(index + 1);
                }
                // 判断单个文件大于1M
//                long fileSize = file.getSize();
//                if (fileSize > 1024 * 1024) {
//                    System.out.println("文件大小为(单位字节):" + fileSize);
//                    System.out.println("该文件大于1M");
//                }
                // 当文件有后缀名时
                if (fileName.indexOf(".") >= 0) {
                    // split()中放正则表达式; 转义字符"\\."代表 "."
                    String[] fileNameSplitArray = fileName.split("\\.");
                    // 加上random戳,防止附件重名覆盖原文件
                    fileName = imgName + RandomUtil.generateNumberString(1) + "." + fileNameSplitArray[1];
                }
                // 当文件无后缀名时(如C盘下的hosts文件就没有后缀名)
                if (fileName.indexOf(".") < 0) {
                    // 加上random戳,防止附件重名覆盖原文件
                    fileName = imgName + RandomUtil.generateNumberString(1);
                }

                InputStream input = file.getInputStream();
                // 创建OSSClient实例
                OSSClient ossClient = new OSSClient(ENDPOINT, ACCESSKEYID, ACCESSKEYSECRET);
                // 上传文件流
                ossClient.putObject(BUCKETNAME, img + fileName, input);
                ossClient.shutdown();
                imgURL.add(img + fileName);
            }
            ret.put("msg", true);

            ret.put("URL", String.join(",", imgURL));
//            System.out.println(("图片上传阿里云 name=" + key + fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return ret;

    }


}

